using System;
using System.Collections.Generic;
using VSLangProj80;
using Interop = Microsoft.VisualStudio.Shell.Interop;

namespace VSSDKAssist.Platform.Enums
{
	/// <summary>
	/// Visual Studio context guids enum
	/// </summary>	
	public static class UIContextGuid
	{
		static UIContextGuid()
		{
			values = new SortedDictionary<Guid, string>();
			values.Add(new Guid(Interop.UIContextGuids.CodeWindow), "Code window");
			values.Add(new Guid(Interop.UIContextGuids.Debugging), "Debugging");
			values.Add(new Guid(Interop.UIContextGuids.DesignMode), "Design mode");
			values.Add(new Guid(Interop.UIContextGuids.Dragging), "Dragging");
			values.Add(new Guid(Interop.UIContextGuids.EmptySolution), "Empty solution");
			values.Add(new Guid(Interop.UIContextGuids.FullScreenMode), "Full screen mode");
			values.Add(new Guid(Interop.UIContextGuids.NoSolution), "No solution");
			values.Add(new Guid(Interop.UIContextGuids.SolutionBuilding), "Solution building");
			values.Add(new Guid(Interop.UIContextGuids.SolutionExists), "Solution exists");
			values.Add(new Guid(Interop.UIContextGuids.SolutionHasMultipleProjects), "Solution has multiple projects");
			values.Add(new Guid(Interop.UIContextGuids.SolutionHasSingleProject), "Solution has single project");

			values.Add(new Guid(Interop.UIContextGuids80.NotBuildingAndNotDebugging), "Not building and not debugging");
			values.Add(new Guid(Interop.UIContextGuids80.SolutionExistsAndNotBuildingAndNotDebugging), "Solution exists and not building and not debugging");
			values.Add(new Guid(Interop.UIContextGuids80.SolutionOrProjectUpgrading), "Solution or project upgrading");
			values.Add(new Guid(Interop.UIContextGuids80.ToolboxInitialized), "Toolbox initialized");
			values.Add(new Guid(Interop.UIContextGuids80.WindowsFormsDesigner), "Windows forms designer");

			values.Add(new Guid(vsContextGuids.vsContextGuidVBEditor), "VB editor");
			values.Add(new Guid(vsContextGuids.vsContextGuidVBProject), "VB project");
			values.Add(new Guid(vsContextGuids.vsContextGuidVCSEditor), "VCS editor");
			values.Add(new Guid(vsContextGuids.vsContextGuidVCSProject), "VCS project");
			values.Add(new Guid(vsContextGuids.vsContextGuidVJSEditor), "VJS editor");
			values.Add(new Guid(vsContextGuids.vsContextGuidVJSProject), "VJS project");
		}

		#region Properties
		private static SortedDictionary<Guid, string> values;

		/// <summary>
		/// Gets the values.
		/// </summary>
		/// <value>The values.</value>
		public static SortedDictionary<Guid, string> Values
		{
			get { return values; }
		}
		#endregion
	}
}